package Map;

import java.util.*;

public class Test {
    public static void main(String[] args) {
        //key类型:String  value类型:Integer
        Map<String,Integer> treeMap = new TreeMap<>();
        test1(treeMap);
        test2(treeMap);
        test3(treeMap);
    }

    public static void test1(Map<String,Integer> treeMap) {
        System.out.println("==============test1==============");
        //插入的时候比较的是key,所以插入的key的类型一定是可以比较大小的
        treeMap.put("hello",3);
        treeMap.put("abc",4);
        treeMap.put("the",6);
        //如果插入同样的key，那么这个key的value值就会被更新为新put的value值
//        treeMap.put("the",16);
        System.out.println(treeMap);

        Integer val = treeMap.get("hello");      //得到的是key的value值
        System.out.println(val);

        //如果没有这个key，那也可以通过getOrDefault方法给一个默认的value来完成value的获取，如果存在key，返回对应的value
        Integer val1 = treeMap.getOrDefault("hello",120);
        Integer val2 = treeMap.getOrDefault("hello2",120);
        System.out.println(val1);
        System.out.println(val2);
        System.out.println("==============test2==============");
    }
    public static void test2(Map<String,Integer> treeMap) {
        Set<String> setMap = treeMap.keySet();        //返回所有key不重复集合
        System.out.println(setMap);

        Collection<Integer> integervalue = treeMap.values();    //返回所有value的可重复集合
        System.out.println(integervalue);

        Integer val = treeMap.remove("hello");           //删除key对应的映射关系
        System.out.println(val);
        Integer val1 = treeMap.get("hello");
        System.out.println(val1);
        Set<String> setMap1 = treeMap.keySet();        //返回所有key不重复集合
        System.out.println(setMap1);
        System.out.println("==============test3==============");

    }
    public static void test3(Map<String,Integer> treeMap) {
        //Map.Entry 表示Map接口里面的内部接口，这个接口由static修饰
        Set<Map.Entry<String,Integer>> set = treeMap.entrySet();                    //获取所有key-value集合
        //打印
        System.out.println(set);

        for (Map.Entry<String,Integer> e : set) {
            System.out.print(" key: "+e.getKey()+" value: " +e.getValue());
        }
    }
}
